<?php


namespace App\Service;


use GuzzleHttp\Client;

class BaiduMapToGeo
{
    const From_1=1;//GPS标准坐标；
    const From_2=2;//搜狗地图坐标；
    const From_3=3;//火星坐标（gcj02），即高德地图、腾讯地图和MapABC等地图使用的坐标
    const From_4=4;//3中列举的地图坐标对应的墨卡托平面坐标;
    const From_5=5; //百度地图采用的经纬度坐标（bd09ll）
    const From_6=6;//百度地图采用的墨卡托平面坐标（bd09mc）
    const From_7=7;//图吧地图坐标
    protected  $ak='xck5u2lga9n1bZkiaXIHtMufWXQnVhdx';
    protected $client;
    public function __construct(Client  $client)
    {
        $this->client=$client;
    }
    //坐标转化
    public function geoconv($form,$lng,$lat,$to=5){
       $response= $this->client->get('https://api.map.baidu.com/geoconv/v1/',[
            'query'=>[
                'coords'=>implode(',',[$lng,$lat]),
                'from'=>$form,
                'to'=>$to,
                'ak'=>$this->ak
            ]
        ]);
       $result= json_decode($response->getBody()->getContents(),true);
       return [$result['result'][0]['x'],$result['result'][0]['y']];
    }
    //逆地址编码
    public function reverse_geocoding($lng,$lat){

        $response= $this->client->get('https://api.map.baidu.com/reverse_geocoding/v3/',[
            'query'=>[
                'location'=>implode(',',[$lat,$lng]),
                'ak'=>'ZGYLWUp00XLQABF7a0o3Eos5LKsGvvHp',
                'output'=>'json'
            ]
        ]);
        $result= json_decode($response->getBody()->getContents(),true);
        return $result;
    }
    public function geocoding($address){

        $response= $this->client->get('https://api.map.baidu.com/geocoding/v3/',[
            'query'=>[
                'address'=>$address,
                'ak'=>'ZGYLWUp00XLQABF7a0o3Eos5LKsGvvHp',
                'output'=>'json'
            ]
        ]);
        $result= json_decode($response->getBody()->getContents(),true);
        return $result;
    }
}
